<?php
include_once 'Modelo/DA_ArchReporteGestor.php';
include_once 'Controlador/BL_ReporteGestor.php';
include_once 'Modelo/DA_BD_Reporte.php';

include_once 'Vista/UI_CargaMasiva.php';
include_once 'Vista/UI_Error.php';
include_once 'Vista/UI_Apariencia.php';

class CargaMasiva{
	public static function iniciarProceso() {
		//Obtener los archivos como arreglos de lineas (Data Access)
		$resultado = self::CM1_ArchsTxt();
		if ($resultado !== false) {
			UI_CargaMasiva::exitoCM1_ArchTxt($resultado);
			
			//Cargar arreglos (Bussiness Logic)
			//En este caso no hay Bussiness Objects, estos serian los arreglos
			$resultado = self::CM2_Estructuras($resultado);
			if ($resultado !== false) {
				UI_CargaMasiva::exitoCM2_Estructuras(
					$resultado['arrReportes'],
					$resultado['arrApps'],
					$resultado['arrVentanas'],
					$resultado['arrReporteLineas']
				);				
				//Guardar estructuras en BD (Data Access)
				$resultado = self::CM3_DataBase($resultado);
				if ($resultado !== false) {
					UI_CargaMasiva::exitoCM3_DataBase();
				}				
			}		
		}
	}
	
	private static function CM1_ArchsTxt() {
		$objGestor = new DA_ArchReporteGestor(Omicron::rutaDir);
		if($objGestor->hayError()){
			UI_Error::imprimeError($objGestor->getError());
			return false;
		}
		else{
			//Objetos que contienen los archivos como arreglos de lineas
			return $objGestor->getArrObjArchReporte();
		}		
	}	

	private static function CM2_Estructuras($arrObjArchReporte) {		
		$objGestor = new BL_ReporteGestor($arrObjArchReporte);
		if($objGestor->hayError()){
			UI_Error::imprimeError($objGestor->getError());
			return false;
		}
		else{
			return array(
				'arrReportes'=>$objGestor->getArrReportes(),
				'arrApps'=>$objGestor->getArrApps(),
				'arrVentanas'=>$objGestor->getArrVentanas(),
				'arrReporteLineas'=>$objGestor->getArrReporteLineas()									
			);
		}		
	}
	
	private static function CM3_DataBase($arr) {
		$objDataAccess = new DA_BD_Reporte(
			$arr['arrReportes'],
			$arr['arrApps'],
			$arr['arrVentanas'],
			$arr['arrReporteLineas']
		);
		if($objDataAccess->hayError()){
			UI_Error::imprimeError($objDataAccess->getError());
			return false;			
		}
		return true;
	}
}